package com.example.kugou.commons.jianduo;

import java.io.UnsupportedEncodingException;

/**
 * @author 吴赵娣
 * @create 2020-01-14 14:46
 */
public class   StringUtil {

    // 国标码和区位码转换常量

    int GB_SP_DIFF = 160;
//存放国标一级汉字不同读音的起始区位码

    int[] secPosValueList = {
    1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787,
            3106, 3212, 3472, 3635, 3722, 3730, 3858, 4027, 4086,
            4390, 4558, 4684, 4925, 5249, 5600};
//存放国标一级汉字不同读音的起始区位码对应读音

char[] firstLetter = {
            'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j',
            'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
            't', 'w', 'x', 'y', 'z'};
public char convert(  String ch) {
            byte[] bytes=new byte[2];
            try {
              bytes = ch.getBytes("GB2312");
            } catch (UnsupportedEncodingException e) {
              e.printStackTrace();
            }
            char result = '-';
            int secPosValue = 0;
            int i;
            for (i = 0; i < bytes.length; i++) {
            bytes[i] -= GB_SP_DIFF;
          }
            secPosValue = bytes[0] * 100 + bytes[1];
            for (i = 0; i < 23; i++) {
            if (secPosValue >= secPosValueList[i] && secPosValue < secPosValueList[i + 1]) {
            result = firstLetter[i];
            break;
          }
          }
          return result;
        }

    // 得到一个汉字的拼音第一个字母，如果是一个英文字母则直接返回大写字母 
    private static   String GetCharSpellCode(  String cnChar)
    {
        long iCnChar;
        byte[] ZW = cnChar.getBytes();//System.Text.Encoding.Default.GetBytes(CnChar);

        // (1) 如果是字母，则直接返回 
        if (ZW.length == 1) return cnChar.toUpperCase();
        else
        {
            int i1 = (short)(ZW[0]);
            int i2 = (short)(ZW[1]);
            iCnChar = i1 * 256 + i2;
        }

        // (2) 汉字处理
        if ((iCnChar >= 45217) && (iCnChar <= 45252)) {
            return "A";
        }
        else if ((iCnChar >= 45253) && (iCnChar <= 45760))    {
            return "B";
        }
        else if ((iCnChar >= 45761) && (iCnChar <= 46317))  {
            return "C";
        }
        else if ((iCnChar >= 46318) && (iCnChar <= 46825))  {
            return "D";
        }
        else if ((iCnChar >= 46826) && (iCnChar <= 47009)) {
            return "E";
        }
        else if ((iCnChar >= 47010) && (iCnChar <= 47296))   {
            return "F";
        }
        else if ((iCnChar >= 47297) && (iCnChar <= 47613))  {
            return "G";
        }
        else if ((iCnChar >= 47614) && (iCnChar <= 48118))  {
            return "H";
        }
        else if ((iCnChar >= 48119) && (iCnChar <= 49061)) {
            return "J";
        }
        else if ((iCnChar >= 49062) && (iCnChar <= 49323)) {
            return "K";
        }
        else if ((iCnChar >= 49324) && (iCnChar <= 49895))  {
            return "L";
        }
        else if ((iCnChar >= 49896) && (iCnChar <= 50370))   {
            return "M";
        }
        else if ((iCnChar >= 50371) && (iCnChar <= 50613)) {
            return "N";
        }
        else if ((iCnChar >= 50614) && (iCnChar <= 50621))  {
            return "O";
        }
        else if ((iCnChar >= 50622) && (iCnChar <= 50905))   {
            return "P";
        }
        else if ((iCnChar >= 50906) && (iCnChar <= 51386)){
            return "Q";
        }
        else if ((iCnChar >= 51387) && (iCnChar <= 51445)){
            return "R";
        }
        else if ((iCnChar >= 51446) && (iCnChar <= 52217)) {
            return "S";
        }
        else if ((iCnChar >= 52218) && (iCnChar <= 52697)){
            return "T";
        }
        else if ((iCnChar >= 52698) && (iCnChar <= 52979)){
            return "W";
        }
        else if ((iCnChar >= 52980) && (iCnChar <= 53640)){
            return "X";
        }
        else if ((iCnChar >= 53689) && (iCnChar <= 54480)) {
            return "Y";
        }
        else if ((iCnChar >= 54481) && (iCnChar <= 55289))    {
            return "Z";
        }
        else{
            return ("?");
        }
    }

    public static void main(String[] args) {
        System.out.println(GetCharSpellCode("啊"));
    }
}
